import java.util.concurrent.locks.*;

public class Bancaria {

	private ReadWriteLock lock = new ReentrantReadWriteLock();
	private double balanco;
	
	public void deposito(double montante) 
	{
		lock.writeLock().lock();
		try{
			double newBalanco = balanco + montante;
			System.out.println("Depositando o Valor de R$ " + montante + " Saldo de R$ " + newBalanco);
			balanco = newBalanco;
		}finally{
			lock.writeLock().unlock();
		}
	}
	public void saque(double montante) // monitor de sincronia
	{
		lock.writeLock().lock();
		try{
			double newBalanco = balanco - montante;
			System.out.println("Sacando o Valor de R$ " + montante + " Saldo de R$ " + newBalanco);
			balanco = newBalanco;
		}finally{
			lock.writeLock().unlock();
		}
	}
  // retorno da informacao
	public double getSaldo()
	{
		lock.readLock().lock();
		try
		{
			return balanco;
		}finally
		{
			lock.readLock().unlock();
		}
	}
}